using System;
using System.Collections.Generic;
using System.Text;
using EntidadesTO;
using System.Data;
using System.Data.SqlClient;

namespace AccesoDatos
{
    public class HistoriaModificacionesPOMDA
    {
        public void GuardarNuevo(HistoriaModificacionesPOMTO pHistoriaModificacionPOM)
        {

            SqlCommand comando;
            ConexionBD instanciaConexion = ConexionBD.ObtenerInstancia();

            try
            {
                instanciaConexion.AbrirConexion();
                comando = new SqlCommand("sp_ins_SEC_HistoriaModificacionesPOM", instanciaConexion.ObtenerConexion());
                comando.Parameters.AddWithValue("@pNumProyOrdMunicipal", pHistoriaModificacionPOM.NumProyOrdMunicipal);
                comando.Parameters.AddWithValue("@pFecha", pHistoriaModificacionPOM.Fecha);
                comando.Parameters.AddWithValue("@pAccion", pHistoriaModificacionPOM.Accion);
                comando.Parameters.AddWithValue("@pObservaciones", pHistoriaModificacionPOM.Observaciones);
                comando.Parameters.AddWithValue("@pCodUsuario", pHistoriaModificacionPOM.CodUsuario);

                comando.CommandType = CommandType.StoredProcedure;

                comando.ExecuteNonQuery();

                instanciaConexion.CerrarConexion();
            }
            catch (SqlException ex)
            {
                throw ex;
            }
            finally
            {
                if (instanciaConexion.ObtenerConexion().State != ConnectionState.Closed)
                {
                    instanciaConexion.CerrarConexion();
                }
            }
        }

        public List<HistoriaModificacionesPOMTO> BuscarHistoriaPorProyecto(int pNumProyecto)
        {
            List<HistoriaModificacionesPOMTO> listaHistoriaPOM = new List<HistoriaModificacionesPOMTO>();
            SqlDataReader reader = null;
            SqlCommand comando;
            ConexionBD instanciaConexion = ConexionBD.ObtenerInstancia();

            try
            {

                instanciaConexion.AbrirConexion();
                comando = new SqlCommand("sp_get_SEC_HistoriaModificacionesPOM_filter", instanciaConexion.ObtenerConexion());
                comando.Parameters.AddWithValue("@pNumProyOrdMunicipal", pNumProyecto);

                comando.CommandType = CommandType.StoredProcedure;

                reader = comando.ExecuteReader();
                while (reader.Read())
                {

                    HistoriaModificacionesPOMTO historiaTO = new HistoriaModificacionesPOMTO();
                    historiaTO.NumProyOrdMunicipal = reader.GetInt32(reader.GetOrdinal("numProyOrdMunicipal"));
                    historiaTO.ConsecHistoria = reader.GetInt32(reader.GetOrdinal("consecHistoria"));
                    historiaTO.Fecha = reader.GetDateTime(reader.GetOrdinal("fecha"));
                    historiaTO.Accion = reader.GetInt32(reader.GetOrdinal("accion"));
                    historiaTO.DesAccion = reader.GetString(reader.GetOrdinal("desTransacHistPOM"));
                    historiaTO.Observaciones = reader.GetString(reader.GetOrdinal("observaciones"));
                    historiaTO.CodUsuario = reader.GetInt32(reader.GetOrdinal("codUsuario"));
                    historiaTO.NomUsuario = reader.GetString(reader.GetOrdinal("desNombres"));

                    listaHistoriaPOM.Add(historiaTO);
                }

                reader.Close();
                instanciaConexion.CerrarConexion();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                listaHistoriaPOM = null;

            }
            finally
            {
                if (reader != null)
                {
                    if (reader.IsClosed == false)
                        reader.Close();
                }
                if (instanciaConexion.ObtenerConexion().State != ConnectionState.Closed)
                {
                    instanciaConexion.CerrarConexion();
                }
            }

            return listaHistoriaPOM;

        }
    }
}
